package com.jiang.专题.滑动窗口.Q209;

/**
 * @author Jiang
 * @version 1.0
 * @date 2025/01/20 14:52
 */
class Solution {
    // public int minSubArrayLen(int target, int[] nums) {
    //     // 子数组的长度为1
    //     for (int i = 0; i < nums.length; i++) {
    //         if (nums[i] >= target) {
    //             return 1;
    //         }
    //     }

    //     // 如果nums长度为1，且nums[0]小于target，返回0
    //     if(nums.length == 1) return 0;

    //     int i = 0, j = 1, temp = nums[i] + nums[j], res = Integer.MAX_VALUE;
    //     while (i < j && j < nums.length) {
    //         if(temp >= target && j < nums.length) {
    //             res = Math.min(res, j - i + 1);
    //             temp -= nums[i++];
    //         } else if (++j < nums.length) {
    //             temp += nums[j];
    //         }
    //     }
    //     return res == Integer.MAX_VALUE ? 0 : res;
    // }

    public int minSubArrayLen(int target, int[] nums) {
        int left = 0, sum = 0, res = Integer.MAX_VALUE;
        for (int right = 0; right < nums.length; right++) {
            sum += nums[right];
            while (sum >= target) {
                res = Math.min(res, right - left + 1);
                sum -= nums[left++];
            }
        }
        return res == Integer.MAX_VALUE ? 0 : res;
    }

}
